package com.gary.memoryLeak;

import lombok.Data;

import java.util.HashSet;

/**
 * @author peng_rui
 * @date 2022/3/13
 */
public class ChangeHashCodeDemo {

    public static void main(String[] args) {
        HashSet<IntDemo> set = new HashSet<>();
        IntDemo demo1 = new IntDemo();
        demo1.setX(10);
        set.add(demo1);

        //前提修改了hashCode 和 equals 方法 lombok @Data
        //错误的操作，在将对象放入了set中后 将对象的属性值进行了修改 导致对象的hashCode发生了改变
        demo1.setX(20);

        // 结果 false 无法根据hashCode 找到对应位置的对象
        System.out.println("removeOk : " + set.remove(demo1));

    }

}

@Data
class IntDemo {
    private Integer x;
}